package com.ceshi.vo;

/**
 * 全局的公共请求响应码：
 * <p>
 * 以两位数分隔级别： 00 00 00
 * 000000 请求成功
 * 第一级大分类异常第一位数+1, （例如：非法参数异常，100000）
 * 第二级大分类异常第三位数+1, （例如：非法参数异常，101000）
 * 第三级大分类异常第五位数+1, （例如：非法参数异常，101010）
 * <p>
 * 使用优先级：第三级>第二级>第一级>
 * <p>
 ***根据响应码规则可以自定义枚举.
 *
 * @author odin
 * @date 2020/9/22 17:49
 */
public enum ResponseCodeEnum {
    /**
     * 请求成功.
     */
    SUCCESS("000000", "成功"),
    /**
     * 所有异常
     */
    ALL_EXCEPTION("100000", "所有异常"),
    /**
     * 参数非法
     * （预期参数应该在系统中能查找到对应数据，非法参数则为系统中不存在的数据值，可能存在伪造、攻击等，例如:父子级或者关联关系的id查询不存在，校验失败）.
     */
    ILLEGAL_ARGUMENT_EXCEPTION("101000", "参数非法"),
    /**
     * TOKEN检验失败异常
     */
    TOKEN_FAIL_EXCEPTION("102000", "TOKEN检验异常"),
    /**
     * TOKEN过期
     */
    TOKEN_OVERDUE_EXCEPTION("102010", "TOKEN过期"),
    /**
     * TOKEN为空
     */
    TOKEN_NULL_EXCEPTION("102020", "TOKEN为空"),
    /**
     * API的异常
     */
    API_EXCEPTION("200000", "API的异常"),
    /**
     * 接口调用错误
     */
    INTERFACE_CALL_EXCEPTION("201000", "接口调用错误"),
    /**
     * 接口数据异常
     */
    API_DATA_EXCEPTION("201010", "接口数据异常"),
    /**
     * 登录异常
     */
    LOGIN_EXCEPTION("202010", "登录异常");

    private String code;
    private String message;

    ResponseCodeEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

}
